// For license information, see `https://kiwi.collegeboard.org/cb-global/f740f8a20d94/74f95571d83d/d094bc42ea3d/RC36bb1eedde14414f8d20c18d67bae0e6-source.js`. _satellite.__registerScript('https://kiwi.collegeboard.org/cb-global/f740f8a20d94/74f95571d83d/d094bc42ea3d/RC36bb1eedde14414f8d20c18d67bae0e6-source.min.js', "const loggerKey=\"CER - kiwi.trackQueue - Actions - Handle Event\";try{_satellite.logger.info(`${loggerKey}`);const{updateDl:e=!1,trackEventPayload:t={},passedIn:a=[],...i}=event?.detail||event||{},r=_satellite.getVar(\"Page Config - Tech\")||{},o={\"fail-over\":r.failOverTrackingTmoMs||5e3,\"page-load\":r.pageLoadTrackTmoMs||2500,\"route-hash\":r.routeHashTrackTmoMs||2500,\"spa-page\":r.spaPageTrackTmoMs||1500,\"widget-screen\":r.widgetScreenTrackTmoMs||750,spa:1e3,widgets:1e3,\"asch-start\":0,\"asch-end\":750},c=\"%7B%22name%22:%22%22,%22nameSource%22:%22%22%7D\";let g=i.trackSource,l=i.expectWidgets||r.expectWidgets||!1,n=r.expectSpa||!1;(r.ignoreWidgets||\"derive\"===r.expectWidgets)&&(l=!1),\"whileloggedin\"===n&&(n=kiwi.util.cbUser.isLoggedIn());const s=function({trackSource:e,expectWidgets:a,expectSpa:i,updateDl:r,passedIn:g}={}){_satellite.logger.info(`${loggerKey} > params:`,arguments[0]);const l=t?.key||\"\",n=l?`${e}:${l}`:e;kiwi._tq&&\"page-load\"!==e||kiwi._tqfn.initializeVars(),\"page-load\"===e&&kiwi._tqfn.resetDataAfterTrack(),r&&(kiwi._tq.pageNameObject=kiwi._tqfn.updateDlsAndGetLatestPageName());let s=0,k=\"link\";const w=!kiwi._tq.pageTrackInProgress&&(e.match(/^(page-load|route-hash|widget-screen)$/i)||\"spa\"===e&&!kiwi._tq.inQueue[\"fail-over\"]);if(w&&\"spa\"===e&&(e=\"spa-page\"),w){_satellite.logger.info(`${loggerKey} > New Page Track Queue started! with: ${e}`);(_satellite.getVar(\"Config - Track - No Queue Track Pages\")||{})[_satellite.getVar(\"CDL - Page - Name\")]&&kiwi._tqfn.doTrack({trackSource:\"no-queue-track\",pageOrLink:\"page\",startTrackSource:\"\",startTrackCall:s})}kiwi._tq.pageTrackInProgress=w||kiwi._tq.pageTrackInProgress,kiwi._tq.pageTrackInProgress&&(k=\"page\");const u=function(){kiwi._tq.tmos[\"fail-over\"]||(kiwi._tq.timeStampTrackStart=Date.now(),s=1,kiwi._tq.startTrackSource=e,kiwi._tqfn.tmoStart({tmoMs:o[\"fail-over\"],trackSource:\"fail-over\",pageOrLink:k,pageNameObject:kiwi._tq.pageNameObject,startTrackSource:kiwi._tq.startTrackSource,startTrackCall:!1}))};switch(e){case\"page-load\":u(),kiwi._tq.inQueue[e]=1,kiwi._tq.waitCount++,_satellite.logger.info(`${loggerKey} > WaitCount++: ${kiwi._tq.waitCount} for ${n}`),kiwi._tq.inQueue[\"route-hash\"]=1,kiwi._tqfn.tmoStart({tmoMs:o[e],trackSource:e,pageOrLink:k,pageNameObject:kiwi._tq.pageNameObject,startTrackSource:kiwi._tq.startTrackSource,startTrackCall:s}),a&&(kiwi._tq.inQueue.expectwidgets=1,kiwi._tq.waitCount++,_satellite.logger.info(`${loggerKey} > (expectWidgets) WaitCount++: ${kiwi._tq.waitCount} for ${n}`)),i&&(kiwi._tq.inQueue.expectspa=1,kiwi._tq.waitCount++,_satellite.logger.info(`${loggerKey} > (expectSpa) WaitCount++: ${kiwi._tq.waitCount} for ${n}`));break;case\"route-hash\":case\"spa-page\":case\"widget-screen\":u(),kiwi._tq.inQueue[e]?_satellite.logger.info(`${loggerKey} > ${e} > already in queue!`):(_satellite.logger.info(`${loggerKey} > ${e} > not yet in queue`),kiwi._tq.inQueue[e]=1,kiwi._tq.waitCount++,_satellite.logger.info(`${loggerKey} > WaitCount++: ${kiwi._tq.waitCount} for ${n}`),kiwi._tqfn.tmoStart({tmoMs:o[e],trackSource:e,pageOrLink:k,pageNameObject:kiwi._tq.pageNameObject,startTrackSource:kiwi._tq.startTrackSource,startTrackCall:s}));break;case\"spa\":case\"widgets\":u(),kiwi._tq.inQueue[e]?_satellite.logger.info(`${loggerKey} > ${e} > already in queue!`):(_satellite.logger.info(`${loggerKey} > ${e} > not yet in queue`),kiwi._tq.inQueue[e]=1,kiwi._tq.inQueue[`expect ${e}`]?kiwi._tqfn.tmoEnd({trackSource:e,pageOrLink:k,pageNameObject:c,startTrackSource:kiwi._tq.startTrackSource,startTrackCall:s}):(kiwi._tq.waitCount++,_satellite.logger.info(`${loggerKey} > WaitCount++: ${kiwi._tq.waitCount} for ${n}`),kiwi._tqfn.tmoStart({tmoMs:o[e],trackSource:e,pageOrLink:k,pageNameObject:kiwi._tq.pageNameObject,startTrackSource:kiwi._tq.startTrackSource,startTrackCall:s})));break;case\"asch-start\":l&&(kiwi._tq.aschKeysStarted[l]||kiwi._tq.aschKeysLoaded[l]?_satellite.logger.info(`${loggerKey} > no addition to waitcount: ${kiwi._tq.waitCount} for ${n} (already started/loaded)`):(kiwi._tq.aschKeysStarted[l]=1,kiwi._tq.waitCount++,_satellite.logger.info(`${loggerKey} > WaitCount++: ${kiwi._tq.waitCount} for ${n}`)));break;case\"asch-end\":l&&(kiwi._tq.aschKeysLoaded[l]?_satellite.logger.info(`${loggerKey} > no tmoStart for async child: ${l} (already loaded)`):kiwi._tq.aschKeysStarted[l]?(_satellite.logger.info(`${loggerKey} > prior \"starting\" call found, so no addition to WaitCount: ${kiwi._tq.waitCount} for ${n}`),kiwi._tqfn.tmoStart({tmoMs:o[e],trackSource:n,pageOrLink:k,pageNameObject:kiwi._tq.pageNameObject,startTrackSource:kiwi._tq.startTrackSource,startTrackCall:s})):kiwi._tq.pageTrackInProgress?(kiwi._tq.aschKeysStarted[l]=1,kiwi._tq.aschKeysLoaded[l]=1,_satellite.logger.info(`${loggerKey} > pagetrack already in progress so no tracking tmo kicked off for ${n}`)):(kiwi._tq.aschKeysLoaded[l]=1,_satellite.logger.info(`${loggerKey} > no prior \"starting\" call found, and not within page track progress, so ignoring for ${n}`)));break;case\"acdl-page\":kiwi._tqdl=kiwi._tqdl||[];for(let e=0;e ${e} > ${kiwi._tq.pageNameObject.name}`),_satellite.track(\"cbTrack.viewInDom\")):(_satellite.logger.info(`${loggerKey} > ${e} > sending page track now`),kiwi._tqfn.trackPage({pageNameObject:\"\",wholeTrackSource:\"acdl-page\"}))}};if(kiwi._tqfn={loggerKey:loggerKey,initializeVars:function(){kiwi.flags=kiwi.flags||{},kiwi.flags._pageLoadTracked=0,kiwi._tq={pageNameObject:_satellite.getVar(\"CDL - Page - Name Object\"),waitCount:0,tmos:{},inQueue:{},aschKeys:{},timeStampInit:Date.now(),timeStampTrackStart:0,timeStampTrackEnd:0,startTrackSource:\"\",pageTrackInProgress:0},_satellite.logger.info(`${loggerKey} > WaitCount: ${kiwi._tq.waitCount} initializeVars`)},updateDlsAndGetLatestPageName:function(){return _satellite.logger.info(`${loggerKey} > ${g} > ${kiwi._tq.pageNameObject.name} > calling updateDlsAndGetLatestPageName();`),_satellite.getVar(\"Data Layer Push - Page View\"),_satellite.getVar(\"CDL - Page - Name Object\")},tmoStart:function({tmoMs:e,trackSource:t,pageOrLink:a,pageNameObject:i,startTrackSource:r,startTrackCall:o}={}){e=e||0,i=i||kiwi._tq.pageNameObject||_satellite.getVar(\"CDL - Page - Name Object\"),_satellite.logger.info(`${kiwi._tqfn.loggerKey} > TMO Start for ${e} ms > {${t}, ${i.name}} > ${a}`);let c=encodeURI(JSON.stringify(i));e?kiwi._tq.tmos[t]=setTimeout(kiwi._tqfn.tmoEnd.bind(null,{trackSource:t,pageOrLink:a,encStrObjPageName:c,startTrackSource:r,startTrackCall:o}),e):kiwi._tqfn.tmoEnd({trackSource:t,pageOrLink:a,encStrObjPageName:c,startTrackSource:r,startTrackCall:o})},tmoEnd:function({trackSource:e,pageOrLink:t,encStrObjPageName:a,startTrackSource:i,startTrackCall:r}={}){let o=e,g=e.split(\":\"),l=g[1];e=g[0],a=a||c;let n=JSON.parse(decodeURI(a));if(_satellite.logger.info(`${kiwi._tqfn.loggerKey} > TMO End > {${e}, ${n.name}} > ${t}`),\"fail-over\"===e)kiwi._tqfn.doTrack({trackSource:e,pageOrLink:t,startTrackSource:i,startTrackCall:r});else{switch(e){case\"page-load\":case\"route-hash\":case\"spa-page\":case\"spa\":case\"widgets\":case\"widget-screen\":kiwi._tq.waitCount--,_satellite.logger.info(`${loggerKey} > WaitCount--: ${kiwi._tq.waitCount} for ${o}`);break;case\"asch-end\":l&&(kiwi._tq.aschKeysStarted[l]?kiwi._tq.aschKeysLoaded[l]?_satellite.logger.info(`${loggerKey} > no waitCount-- for ${o} (already loaded)`):(kiwi._tq.waitCount--,_satellite.logger.info(`${loggerKey} > waitCount--: ${o}`)):kiwi._tq.pageTrackInProgress?_satellite.logger.info(`${loggerKey} > pagetrack already in progress so ignoring ${o} (rogue)`):_satellite.logger.info(`${loggerKey} > no prior \"starting\" call found so ignoring ${o} (rogue)`))}kiwi._tqfn.checkTrackReady({trackSource:e,pageOrLink:t,pageNameObject:n,startTrackSource:i,startTrackCall:r})}},checkTrackReady:function({trackSource:e,pageOrLink:t,pageNameObject:a,startTrackSource:i,startTrackCall:r}={}){kiwi._tq.waitCount?_satellite.logger.info(`${kiwi._tqfn.loggerKey} > Track Queue WAITING (${kiwi._tq.waitCount}) {${e}, ${a.name}} > ${t}`):(_satellite.logger.info(`${kiwi._tqfn.loggerKey} > Track Queue Ready! (${kiwi._tq.waitCount}) {${e}, ${a.name}} > ${t}`),kiwi._tqfn.doTrack({trackSource:e,pageOrLink:t,startTrackSource:i,startTrackCall:r}))},clearAllTmos:function(){_satellite.logger.info(`${kiwi._tqfn.loggerKey} > Clearing all TMOs`),window.clearTimeout(kiwi._tq.tmos[\"fail-over\"]),window.clearTimeout(kiwi._tq.tmos[\"page-load\"]),window.clearTimeout(kiwi._tq.tmos[\"route-hash\"]),window.clearTimeout(kiwi._tq.tmos[\"spa-page\"]),window.clearTimeout(kiwi._tq.tmos.spa),window.clearTimeout(kiwi._tq.tmos.widgets),window.clearTimeout(kiwi._tq.tmos[\"widget-screen\"]),window.clearTimeout(kiwi._tq.tmos[\"asch-end\"])},doTrack:function({trackSource:e,pageOrLink:t,startTrackSource:i,startTrackCall:r}={}){let o=\"\",c=kiwi._tqfn.calculateWholeTrackSource({trackSource:e,startTrackSource:i,startTrackCall:r});if(kiwi._tqfn.resetDataAfterTrack(),\"page\"===t){if(a?.at(0)?.pageNameObject){const e=a?.at(0)?.pageNameObject;o={name:e.pageName,nameSource:e.pageNameSource},c=e.pageTrackSource}else o=kiwi._tqfn.updateDlsAndGetLatestPageName();_satellite.logger.info(`${kiwi._tqfn.loggerKey} > Track Queue TRACK! {${e}, ${o.name}} > ${t}`),kiwi._tqfn.trackPage({pageNameObject:o,wholeTrackSource:c}),kiwi.flags._pageLoadTracked=1}else _satellite.logger.info(`${kiwi._tqfn.loggerKey} > Track Queue TRACK! {${e}, ${o.name}} > ${t}`),kiwi._tqfn.trackLink({trackSource:e,wholeTrackSource:c})},trackPage:function({pageNameObject:e,wholeTrackSource:t}={}){kiwi._tq.timeStampTrackEnd=Date.now(),e=e||kiwi._tqfn.updateDlsAndGetLatestPageName(),_satellite.logger.info(`${kiwi._tqfn.loggerKey} > Calling kiwi.page.track {${t}, ${e.name}}`),_satellite.logger.info(`${kiwi._tqfn.loggerKey} > kiwi._tqdl is set to:`,kiwi._tqdl);const a=_satellite.getVar(\"CDL - Storage - Previous - Site Code\"),i=_satellite.getVar(\"CDL - Storage - Previous - Page Name\");document.dispatchEvent(new CustomEvent(\"kiwi.page.track\",{bubbles:!0,detail:{pageName:e.name,pageNameSource:e.nameSource,pageTrackSource:t,pageTimeToTrack:kiwi._tqfn.calculateTimeToTrack(),prevSiteCode:a,prevPage:i}}))},trackLink:function({trackSource:e,wholeTrackSource:t}={}){const a=`Track Queue - ${e}`;if(\"widgets\"===e){_satellite.logger.info(`${kiwi._tqfn.loggerKey} > Calling kiwi.widgetsReady: {${t}, ${a}}`);const{sourceEvent:e={eventName:\"kiwi.trackQueue\",sourceApp:\"kiwi\"}}=i;_satellite.track(\"kiwi.widgetsReady\",{sourceEvent:e})}else _satellite.logger.info(`${kiwi._tqfn.loggerKey} > Calling kiwi.link.track: {${t}, ${a}}`),document.dispatchEvent(new CustomEvent(\"kiwi.link.track\",{bubbles:!0,detail:{deKey:a,oData:{hasData:!0,trackSource:t}}}))},resetDataAfterTrack:function(){kiwi.flags=kiwi.flags||{},kiwi._tqfn.clearAllTmos(),kiwi._tq.waitCount=0,kiwi._tq.tmos={},kiwi._tq.inQueue={},kiwi._tq.aschKeysStarted=[],kiwi._tq.aschKeysLoaded=[],kiwi._tq.pageTrackInProgress=0,kiwi._tq.startTrackSource=\"\",_satellite.logger.info(`${loggerKey} > WaitCount: ${kiwi._tq.waitCount} > resetDataAfterTrack`)},calculateTimeToTrack:function(){const e=kiwi._tq.timeStampTrackStart||0,t=kiwi._tq.timeStampTrackEnd||0,a=e&&t?kiwi.util.getTimeDiff(e,t,\"ds\"):\"\";return kiwi._tq.timeStampTrackStart=0,kiwi._tq.timeStampTrackEnd=0,a},calculateWholeTrackSource:function({trackSource:e,startTrackSource:t,startTrackCall:a}={}){let i=e;return t&&(i=(a=a||!1)?`${t} >`:`${t} > ${e}`),_satellite.logger.info(`${kiwi._tqfn.loggerKey} > calculateWholeTrackSource {${e}, ${t}, ${a}}`),i}},_satellite.logger.info(`${loggerKey} > payload: `,i),!g)return _satellite.logger.warn(`${loggerKey} > Missing trackSource setting. Aborting.`,i),!1;\"widgets\"===g&&r.ignoreWidgets?_satellite.logger.info(`${loggerKey} > suppressing widget tracking.`):s({trackSource:g,expectWidgets:l,expectSpa:n,updateDl:e,passedIn:a})}catch(e){_satellite.logger.error(`${loggerKey} > Error:`,e)}return!0;");